项目Redis持久存储实现
common/cache/statistic.py
from flask import current_app
from redis.exceptions import ConnectionError
class CountStorageBase(object):
"""
统计数据存储父类
"""
key = ''
@classmethod
def get(cls, user_id):
"""
获取指定用户的数值
:param user_id:
:return:
"""
try:
ret = current_app.redis_master.zscore(cls.key, user_id)
except ConnectionError as e:
current_app.logger.error(e)
ret = current_app.redis_slave.zscore(cls.key, user_id)
if ret is not None:
return int(ret)
else:
return 0
@classmethod
def incr(cls, user_id, increment=1):
"""
给指定用户机统计数据累计
:param user_id:
:param increment:
:return:
"""
current_app.redis_master.zincrby(cls.key, user_id, increment)
class UserArticleCountStorage(CountStorageBase):
"""
用户文章数量存储
"""
key = 'count:user:arts'
class UserFollowingCountStorage(CountStorageBase):
"""
用户关注数量
"""
key = 'count:user:followings'